﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

/// <summary>
/// ECS记录系统
/// </summary>
public abstract class ECSRecordSystemBase : ECSSystemtBase
{
    /// <summary>
    /// 记录方法
    /// </summary>
    /// <param name="frame"></param>
    public abstract void Record(int frame);
    /// <summary>
    /// 还原到第几帧
    /// </summary>
    /// <param name="frame"></param>
    public abstract void RevertToFrame(int frame);
    /// <summary>
    /// 清除第几帧数据
    /// </summary>
    /// <param name="frame"></param>
    public abstract void ClearRecordAt(int frame);
    /// <summary>
    /// 清除第几帧之前记录
    /// </summary>
    /// <param name="frame"></param>
    public abstract void ClearBefore(int frame);
    /// <summary>
    /// 清除第几帧之后记录
    /// </summary>
    /// <param name="frame"></param>
    public abstract void ClearAfter(int frame);
    /// <summary>
    /// 清除全部记录
    /// </summary>
    public abstract void ClearAll();
    /// <summary>
    /// 获取第几帧那个实体id的同步组件
    /// </summary>
    /// <param name="id"></param>
    /// <param name="frame"></param>
    /// <returns></returns>
    public virtual ECSMomentCompoentBase GetRecord(int id, int frame)
    {
        return null;
    }
    /// <summary>
    /// 获取对应帧的网通同步单例组件
    /// </summary>
    /// <param name="frame"></param>
    /// <returns></returns>
    public virtual ECSSingletonMomentCompoentBase GetSingletonRecord(int frame)
    {
        return null;
    }
    /// <summary>
    /// 打印记录
    /// </summary>
    /// <param name="id"></param>
    public abstract void PrintRecord(int id);
}

